//
// Created by jaesonzhang on 2024/3/20.
//

#ifndef CPPSQLITE_EVENT_H
#define CPPSQLITE_EVENT_H

class Event {
public:
    virtual ~Event() = default;

    // 在 C++ 中，const 关键字在成员函数声明的末尾表示该成员函数不会修改对象的状态。
    // 这意味着，当你在一个 const 对象上调用这个成员函数时，它保证不会改变对象的任何成员变量（除非它们被标记为 mutable）。
    virtual Event *clone() const = 0;
};

class EventListener {
public:
    virtual ~EventListener() = default;

    virtual void onEvent(const Event &event) = 0;
};

#endif //CPPSQLITE_EVENT_H
